package org.sql.spring;

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

/** 
 * 扩展spring的PropertyPlaceholderConfigurer。<br>
 * 扩展这个的目的是可以通过这个类去获取属性文件中某个键的具体值。<br>
 * {@linkplain AppUtil}的getProperty方法<br>
 * 在spring配置文件中做如下配置:<br>
 * 
 * <pre>
 * 	&lt;bean id="propPlaceHolder" class="org.sql.spring.PropertyPlaceholderConfigurerExt" >
 *	    &lt;property name="ignoreUnresolvablePlaceholders" value="true"/>
 *	    &lt;property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
 *	    &lt;property name="searchSystemEnvironment" value="true"/>
 *	    &lt;property name="locations">
 *	        &lt;list>
 *	             &lt;value>classpath:conf/*.properties</value>
 *	       &lt;/list>
 *	    &lt;/property>
 *	&lt;/bean>
 * </pre>
 *
 * <pre> 
 * 构建组：e-jdbc
 * 作者：eddy
 * 邮箱：1546077710@qq.com
 * 日期：2017年4月25日-下午10:12:38
 * 版权：E源时代
 * </pre>
 */
public class PropertyPlaceholderConfigurerExt extends PropertyPlaceholderConfigurer {

	/**
	 * 属性key,value
	 */
	private static Map<String, String> properties;

	public PropertyPlaceholderConfigurerExt() {
		properties = new HashMap<String, String>();
	}

	/**
	 * 转换属性
	 */
	protected void convertProperties(Properties props) {
		Set<String> keys = props.stringPropertyNames();
		for (String key : keys) {
			String value = props.getProperty(key);
			properties.put(key, value);
		}
		super.convertProperties(props);
	}

	/**
	 * 根据建获取属性中的值。
	 * 
	 * @param key
	 * @return<br>
	 */
	public String getValue(String key) {
		return properties.get(key);
	}

}
